:tocdepth: 3 .. contents:: *********************** 2008 R4.4 Release Notes *********************** Release Notes Information ========================= This document includes information on CUBRID 2008 R4.4(Build No. 8.4.4.0227). CUBRID 2008 R4.4 includes all of the fixed errors and improved features that were detected in the CUBRID 2008 R4.3 version and were applied to the previous versions. For details on the CUBRID 2008 R4.3, see http://release.cubrid.org/en. Overview ======== CUBRID 2008 R4.4 is a version of stabilizing 2008 R4.3 and improving administrative convenience. CUBRID 2008 R4.4's DB volume is compatible with CUBRID 2008 R4.3's. Therefore, you do not need database migration. For details, see :doc:`/upgrade`. Improvements in Administrative Convenience ------------------------------------------ * Add SQL profiling features * Add or Improve the features of CUBRID administrative tools(utilities) which execute features such as printing various status information or managing transactions. * Strengthen the log messages to facilitate the verification of information on each status. Stablization in HA replication ------------------------------ * Fix the problems that some particular queries are not replicated. * Fix replication delay phenomenon or connection error. Improvements in Sharding Features --------------------------------- * Add a command that allows to see the shard ID corresponding to the SHARD key. * Fix to be able to dynamically adjust the number of CAS for SHARD proxy. * Fix access errors and query processing errors. Behavioral Changes ------------------ * Fix so that there is no case to violate constraints such as PRIMARY KEY or NOT NULL when running "ALTER .. ADD COLUMN" * Remove SELECT_AUTO_COMMIT, a broker parameter. * The range of a value for APPL_SERVER_MAX_SIZE_HARD_LIMIT broker parameter is limited to a value between 1 and 2,097,151. * The default setting of broker parameter SQL_LOG_MAX_SIZE that specifies the size of the SQL log file has been changed to 10MB from 100MB. * In JDBC, zero date value of TIMESTAMP is changed into '0001-01-01 00:00:00' from '1970-01-01 00:00:00'(GST) when the value of zeroDateTimeBehavior property in connection URL is "round". Configuration ------------- * A user can specify capacity units or time units in the parameters to enter the capacity or time. Driver Compatibility -------------------- * The JDBC and CCI driver of CUBRID 2008 R4.4 are compatible with the DB server of CUBRID 2008 R4.3 or before. For more details on changes, see the following. Users of previous versions should check the :ref:`changed-behaviors844` and :ref:`new-cautions844` sections. New Features ============ Administrative Convenience -------------------------- .. 4.4new Support SQL profiling(CUBRIDSUS-10984) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The SQL profiling feature is added for analyzing query performance. The SQL profiling information is output when executing the "SHOW TRACE" statement after executing the "SET TRACE ON" statement and queries as follows: :: csql> SET TRACE ON; csql> SELECT /*+ RECOMPILE */ o.host_year, o.host_nation, o.host_city, n.name, SUM(p.gold), SUM(p.silver), SUM(p.bronze) FROM OLYMPIC o, PARTICIPANT p, NATION n WHERE o.host_year = p.host_year AND p.nation_code = n.code AND p.gold > 10 GROUP BY o.host_nation; csql> SHOW TRACE; trace ====================== ' Query Plan: SORT (group by) NESTED LOOPS (inner join) NESTED LOOPS (inner join) TABLE SCAN (o) INDEX SCAN (p.fk_participant_host_year) (key range: (o.host_year=p.host_year)) INDEX SCAN (n.pk_nation_code) (key range: p.nation_code=n.code) rewritten query: select o.host_year, o.host_nation, o.host_city, n.[name], sum(p.gold), sum(p.silver), sum(p.bronze) from OLYMPIC o, PARTICIPANT p, NATION n where (o.host_year=p.host_year and p.nation_code=n.code and (p.gold> ?:0 )) group by o.host_nation Trace Statistics: SELECT (time: 1, fetch: 1059, ioread: 2) SCAN (table: olympic), (heap time: 0, fetch: 26, ioread: 0, readrows: 25, rows: 25) SCAN (index: participant.fk_participant_host_year), (btree time: 1, fetch: 945, ioread: 2, readkeys: 5, filteredkeys: 5, rows: 916) (lookup time: 0, rows: 38) SCAN (index: nation.pk_nation_code), (btree time: 0, fetch: 76, ioread: 0, readkeys: 38, filteredkeys: 38, rows: 38) (lookup time: 0, rows: 38) GROUPBY (time: 0, sort: true, page: 0, ioread: 0, rows: 5) ' tranlist utility(CUBRIDSUS-9601) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ "cubrid tranlist" utility which shows the transaction information of the database. DBA and DBA groups are only allowed to use it. :: % cubrid tranlist -s testdb Tran index User name Host name Process id Program name ------------------------------------------------------------------------------------- 1(ACTIVE) PUBLIC myhost 1822 broker1_cub_cas_1 2(ACTIVE) dba myhost 1823 broker1_cub_cas_2 3(COMMITTED) dba myhost 1824 broker1_cub_cas_3 ------------------------------------------------------------------------------------- .. 4.4new Sort by the column specified in the tranlist command and output the result(CUBRIDSUS-9655) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A feature to sort by the column specified in the "cubrid tranlist" command and output the result is added. The following example shows how to sort by specifying the fourth column, "Process id," and output the information. :: % cubrid tranlist --sort-key=4 tdb Tran index User name Host name Process id Program name Query time Tran time Wait for lock holder SQL_ID SQL Text -------------------------------------------------------------------------------------------------------------------------------------------------------------- 1(ACTIVE) PUBLIC myhost 20080 query_editor_cub_cas_1 0.00 0.00 -1 *** empty *** 3(ABORTED) PUBLIC myhost 20081 query_editor_cub_cas_2 0.00 0.00 -1 *** empty *** 2(ACTIVE) PUBLIC myhost 20082 query_editor_cub_cas_3 0.00 0.00 -1 *** empty *** 4(ACTIVE) PUBLIC myhost 20083 query_editor_cub_cas_4 1.80 1.80 2, 3, 1 cdcb58552e320 update ta set a=5 where a > ? -------------------------------------------------------------------------------------------------------------------------------------------------------------- Tran index : 4 update ta set a=5 where a > ? killtran utility can remove transactions with SQL ID(CUBRIDSUS-9653) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ killtran utility has ability to remove transactions which executes a designated SQL. :: % cubrid killtran --query-exec-info testdb Tran index Process id Program name Query time Tran time Wait for lock holder SQL ID SQL Text -------------------------------------------------------------------------------------------------------------------------------------------- 1(ACTIVE) 26650 query_editor_cub_cas_1 0.00 0.00 -1 *** empty *** 2(ACTIVE) 26652 query_editor_cub_cas_3 0.00 0.00 -1 *** empty *** 3(ACTIVE) 26651 query_editor_cub_cas_2 0.00 0.00 -1 *** empty *** 4(ACTIVE) 26653 query_editor_cub_cas_4 1.80 1.80 2, 1, 3 cdcb58552e320 update ta set a = 5 where a > 0 -------------------------------------------------------------------------------------------------------------------------------------------- SQL_ID: cdcb58552e320 Tran index : 4 update ta set a = 5 where a > 0 % cubrid killtran --kill-sql-id=cdcb58552e320 -f testdb -i option of killtran utility accepts multiple transactions(CUBRIDSUS-9601) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can specify several transactions with -i option of the killtran utility to remove them at once. :: % cubrid killtran -i 1,3,8 testdb .. 7771 Show parameters of running broker and shard(CUBRIDSUS-10901) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ "cubrid broker info" command shows the parameter information of running broker and "cubrid shard info" command shows the parameter information of running shard. .. 4.4new Event log file to record the status which affects query performance(CUBRIDSUS-10986) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ An additional event log file is added to record the status such as SLOW_QUERY, MANY_IOREADS, LOCK_TIMEOUT, DEADLOCK, and TEMP_VOLUME_EXPAND that affects query performance. For more details, see :ref:`server-event-log`. .. 4.4new cub_master log file includes each node information in the output of HA status(CUBRIDSUS-11113) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When split-brain, fail-over, or failback occurs, information on each node is included in the log file of the cub_master process. The format of a log file is $CUBRID/log/.cub_master.err. The cub_master log file of the master node, which terminates itself to clear the split-brain status, includes the node information as follows: :: Time: 05/31/13 17:38:29.138 - ERROR *** file ../../src/executables/master_heartbeat.c, line 714 ERROR CODE = -988 Tran = -1, EID = 19 Node event: More than one master detected and local processes and cub_master will be terminated. Time: 05/31/13 17:38:32.337 - ERROR *** file ../../src/executables/master_heartbeat.c, line 4493 ERROR CODE = -988 Tran = -1, EID = 20 Node event:HA Node Information ================================================================================ * group_id : hagrp host_name : testhost02 state : unknown -------------------------------------------------------------------------------- name priority state score missed heartbeat -------------------------------------------------------------------------------- testhost03 3 slave 3 0 testhost02 2 master 2 0 testhost01 1 master -32767 0 ================================================================================ The cub_master log file of the node that is changed to the master after fail-over or changed to the slave after failback includes the node information as shown below. :: Time: 06/04/13 15:23:28.056 - ERROR *** file ../../src/executables/master_heartbeat.c, line 957 ERROR CODE = -988 Tran = -1, EID = 25 Node event: Failover completed. Time: 06/04/13 15:23:28.056 - ERROR *** file ../../src/executables/master_heartbeat.c, line 4484 ERROR CODE = -988 Tran = -1, EID = 26 Node event: HA Node Information ================================================================================ * group_id : hagrp host_name : testhost02 state : master -------------------------------------------------------------------------------- name priority state score missed heartbeat -------------------------------------------------------------------------------- testhost03 3 slave 3 0 testhost02 2 to-be-master -4094 0 testhost01 1 unknown 32767 0 ================================================================================ HA -- .. 4.4new The failover method is changed with the "-i" option when executing "cubrid heartbeat stop" command(CUBRIDSUS-9572) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When the "cubrid heartbeat stop" command was executed, failover started after all of the HA server and utilities had been terminated. If any server processes or utilities had not been terminated, they were forcibly terminated. After the update, if replication mismatch does not occur during termination even though server processes are not terminated, the remaining utilities are terminated and failover proceeds immediately. DB restoration time is not required upon restarting HA as server processes are not forcibly terminated. In the updated version, if the -i option is added to the "cubrid heartbeat stop" command, server processes and utilities are immediately terminated and failover proceeds. Sharding -------- "cubrid shard getid" command to print the shard ID for the shard key(CUBRIDSUS-9547) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ "cubrid shard getid" command prints the shard ID for the shard key. The following example prints the shard ID for shard key 1 on shard1, the shard proxy: :: % cubrid shard getid -b shard1 1 The -f option dumps all information of the shard ID. :: % cubrid shard getid -b shard1 -f 1 .. 4.4new Use the cci_set_db_parameter function(CUBRIDSUS-10125) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The cci_set_db_parameter function can be used in the SHARD environment; isolation level and lock timeout can be configured in the SHARD environment. .. 4.4new The password of shard DB can be specified with an environment variable(CUBRIDSUS-11570) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Now SHARD_DB_PASSWORD of shard.conf can be specified with an environment variable. This environment variable is used when you don't want to expose SHARD_DB_PASSWORD to shard.conf. The name format of this environment variable is "_SHARD_DB_PASSWORD"; if is shard1, the name of this environment variable becomes SHARD1_SHARD_DB_PASSWORD. :: export SHARD1_SHARD_DB_PASSWORD=shard123 Configuration ------------- .. 4.4new, 4.4only Shard-related processes are started or terminated by using the "cubrid service" command(CUBRIDSUS-10078) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ "shard" is added to the cubrid.conf "service" parameter to start or terminate the shard-related processes by using the "cubrid service" command. .. 4.4new Add a parameter to adjust the maximum number of replication archive logs(CUBRIDSUS-11377) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The ha_copy_log_max_archives parameter, which adjusts the maximum number of replication archive logs, is added. In the previous versions, the log_max_archives parameter was used to specify both the maximum number of transaction archive logs and the maximum number of replication archive logs. .. 4.4new Add a system parameter to specify transaction rollback when lock escalation occurs(CUBRIDSUS-11384) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The rollback_on_lock_escalation parameter is added to specify transaction rollback when lock escalation occurs. When this parameter is configured to yes, an error log is recorded without escalation when lock escalation occurs; the corresponding lock request fails and the transaction is rolled back. When it is configured to no, lock escalation is executed and the transaction continues to proceed. .. _changed-behaviors844: Behavioral Changes ================== SQL --- .. 4.4new PRIMARY KEY or NOT NULL constraint is not violated when a column without a default value is added to a table containing a record by using the ALTER statement(CUBRIDSUS-9725) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When a column without a default value is added by using the ALTER ... ADD COLUMN statement, the PRIMARY KEY or NOT NULL constraint was violated as all values of the added columns became NULL. This problem has been fixed. In the updated version, * If the constraint of a column to add to a table containing a record is the PRIMARY KEY, the error is returned. * If the constraint of a column to add is NOT NULL and the configuration value of add_column_update_hard_default in cubrid.conf is no, the error is returned. Driver ------ .. 4.4new [JDBC] Change zero date of TIMESTAMP into '1970-01-01 00:00:00'(GST) from '0001-01-01 00:00:00' when the value of zeroDateTimeBehavior in the connection URL is "round"(CUBRIDSUS-11612) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When the value of the property "zeroDateTimeBehavior" in the connection URL is "round", the zero date value of TIMESTAMP is changed into '1970-01-01 00:00:00'(GST) from '0001-01-01 00:00:00'. .. 4.4new [JDBC][CCI] Query timeout is applied to the batch processing function(CUBRIDSUS-10088) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix to apply the queryTimeout to the batch processing functions (the cci_execute_batch function and the cci_execute_array function) and the executeBatch method of JDBC or when the CCI_EXEC_QUERY_ALL flag is assigned to the cci_execute function. The queryTimeout for the batch processing function is applied in the unit of a function (or method); not by separate SQL unit. Utility ------- Changes on "cubrid broker status" command(CUBRIDSUS-9602) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Changes on "cubrid broker status" command are as follows: * Only the status of the executing brokers are shown when you run "cubrid broker status SERVICE=ON". :: $ cubrid broker status SERVICE=ON % query_editor ---------------------------------------------------------------------- ID PID QPS LQS PSIZE STATUS ---------------------------------------------------------------------- 1 20370 0 0 52456 IDLE 2 20371 0 0 52456 IDLE 3 20372 0 0 52456 IDLE 4 20373 0 0 52456 IDLE 5 20374 0 0 52456 IDLE * with -b option, * The first 20 characters of the broker name are shown. When the broker name exceeds 20 characters, '...' is printed right after the first 20 characters of the broker name. * The REQ item is no longer provided. * To show QPS and TPS as unsigned 64-bits integer. In previous versions, negative numbers was shown when an overflow happened. * Add #CONNECT to provide the sum of the number of connections to the CAS processes belongs to the broker. * The SELECT, INSERT, UPDATE, DELETE and OTHERS items show the number of query executions for each. However -f option is given, these items are not printed. * UNIQUE-ERR-Q shows the number of unique key violation errors. * without -b option, * "CLIENT_WAIT" and "CLOSE_WAIT" are shown instead of "CLIENT WAIT" and "CLOSE WAIT". * The broker configuration is no longer provided. * When -l option is given, the information of CAS whose status is "CLOSE_WAIT" is excluded. .. _changed-config844: Configuration ------------- .. page_flush_interval, index_scan_key_buffer_pages은 내부 파라미터로 매뉴얼 노출 안 됨 .. 9.2에서 PROXY_LOG_MAX_SIZE, PROXY_TIMEOUT은 SHARD_PROXY_LOG_MAX_SIZE, SHARD_PROXY_TIMEOUT으로 이름이 바뀌며, 브로커 파라미터로 통합됨. .. 4.4new, 9.2-11456 Time unit or capacity unit next to the time or capacity parameter value can be specified(CUBRIDSUS-10412) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The time unit or the capacity unit is specified next to the system parameter(cubrid.conf), the broker parameter(cubrid_broker.conf) and the shard parameter(shard.conf) where the time or the capacity is entered. In the following table, the right parameters are recommended for use instead of the left parameters. ============================== ============================== Deprecated New ============================== ============================== lock_timeout_in_secs lock_timeout checkpoint_every_npages checkpoint_every_size checkpoint_interval_in_mins checkpoint_interval max_flush_pages_per_second max_flush_size_per_second sync_on_nflush sync_on_flush_size sql_trace_slow_msecs sql_trace_slow ============================== ============================== The input unit and the meaning of the parameters are as follows: +----------------+-----------+--------------+ | Classification | Input | Meaning | | | Unit | | +================+===========+==============+ | Capacity | B | Bytes | | +-----------+--------------+ | | K | Kilobytes | | +-----------+--------------+ | | M | Megabytes | | +-----------+--------------+ | | G | Gigabytes | | +-----------+--------------+ | | T | Terabytes | +----------------+-----------+--------------+ | Time | ms | milliseconds | | +-----------+--------------+ | | s | seconds | | +-----------+--------------+ | | min | minutes | | +-----------+--------------+ | | h | hours | +----------------+-----------+--------------+ The input unit and the meaning of the parameters are as follows: +----------------+---------------------------------+-----------------+ | Classification | Parameter Name | Acceptable Unit | +================+=================================+=================+ | System | backup_volume_max_size_bytes | B,K,M,G,T | | +---------------------------------+-----------------+ | | checkpoint_every_size | B,K,M,G,T | | +---------------------------------+-----------------+ | | checkpoint_interval | ms, s, min, h | | +---------------------------------+-----------------+ | | group_concat_max_len | B,K,M,G,T | | +---------------------------------+-----------------+ | | lock_timeout | ms, s, min, h | | +---------------------------------+-----------------+ | | max_flush_size_per_second | B,K,M,G,T | | +---------------------------------+-----------------+ | | sql_trace_slow | ms, s, min, h | | +---------------------------------+-----------------+ | | sync_on_flush_size | B,K,M,G,T | | +---------------------------------+-----------------+ | | string_max_size_bytes | B,K,M,G,T | | +---------------------------------+-----------------+ | | thread_stacksize | B,K,M,G,T | +----------------+---------------------------------+-----------------+ | Broker | APPL_SERVER_MAX_SIZE_HARD_LIMIT | B, K, M, G | | +---------------------------------+-----------------+ | | LONG_QUERY_TIME | ms, s, min, h | | +---------------------------------+-----------------+ | | LONG_TRANSACTION_TIME | ms, s, min, h | | +---------------------------------+-----------------+ | | MAX_QUERY_TIMEOUT | ms, s, min, h | | +---------------------------------+-----------------+ | | SESSION_TIMEOUT | ms, s, min, h | | +---------------------------------+-----------------+ | | SQL_LOG_MAX_SIZE | B, K, M, G | | +---------------------------------+-----------------+ | | TIME_TO_KILL | ms, s, min, h | +----------------+---------------------------------+-----------------+ | Shard | PROXY_LOG_MAX_SIZE | B, K, M, G | | +---------------------------------+-----------------+ | | PROXY_TIMEOUT | ms, s, min, h | +----------------+---------------------------------+-----------------+ Change the upper limit of the sort_buffer_size system parameter to 2G(CUBRIDSUS-9582) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Change the upper limit of the sort_buffer_size system parameter to 2G. In previous versions, the server was abnormally terminated when sort_buffer_size was set to a value larger than 2G and more thant 2G of sort_buffer was actually used, such as loading a huge index. Remove OFF option from KEEP_CONNECTION broker parameter(CUBRIDSUS-5316) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Remove OFF option from the broker parameter, KEEP_CONNECTION. In 2008 R4.x and earlier versions, when it is set to OFF, the user-defined variable and the LAST_INSERT_ID, ROW_COUNT, PREPARE statement are not executed normally. Change APPL_SERVER_MAX_SIZE_HARD_LIMIT broker parameter(CUBRIDSUS-10260) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Change the permitted range of the value of APPL_SERVER_MAX_SIZE_HARD_LIMIT broker parameter as 1 to 2,097,151. If the value is out of the range, it is not allowed for the broker to be executed. In addition, when the value of APPL_SERVER_MAX_SIZE_HARD_LIMIT is changed to a value smaller than APPL_SERVER_MAX_SIZE by using broker_changer, a warning message is displayed. Change the default value of SQL_LOG_MAX_SIZE broker parameter from 100MB to 10MB(CUBRIDSUS-9944) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Change the default value of SQL_LOG_MAX_SIZE of cubrid_broker.conf from 100MB to 10MB. If a user of a previous version wants to leave SQL logs equivalent to the existing volume of the SQL logs after upgrade, please set the value of SQL_LOG_MAX_SIZE to 100,000 (unit: KB). Other ----- .. 4.4new Feature of asynchronous query is no longer supported(CUBRIDSUS-11265) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When a query is executed by the CSQL Interpreter or by specifying the CCI_EXEC_ASYNC flag in the cci_execute function, the asynchronous query feature that can receive the interim query result is no longer supported. Improvements and Fixes ====================== Performance and Optimization ---------------------------- .. 4.4new Query plan is rewritten when the data volume is increased from the small data(CUBRIDSUS-3382) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If the data volume changed after the previous prepare exceeds critical when prepare is re-executed for the same query, the query plan is rewritten. In the following query, the idx1 index is used when the first SELECT statement is executed. When the second SELECT statement is executed, the query plan is rewritten to use the idx2 index. .. code-block:: sql CREATE TABLE foo (a INT, b INT, c STRING); INSERT INTO foo VALUES(1, 1, REPEAT('c', 3000)); CREATE UNIQUE INDEX idx1 ON foo (a, c); CREATE INDEX idx2 ON foo (a); SELECT a, b FROM foo WHERE a = 1; -- 1st INSERT INTO foo SELECT a+1, b, c FROM foo; INSERT INTO foo SELECT a+2, b, c FROM foo; INSERT INTO foo SELECT a+4, b, c FROM foo; INSERT INTO foo SELECT a+8, b, c FROM foo; INSERT INTO foo SELECT a+16, b, c FROM foo; INSERT INTO foo SELECT a+32, b, c FROM foo; INSERT INTO foo SELECT a+64, b, c FROM foo; INSERT INTO foo SELECT a+128, b, c FROM foo; SELECT a, b FROM foo WHERE a = 1; -- 2nd .. 4.4new Statistical information of only the added index is updated(CUBRIDSUS-10709) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In the previous versions, the statistical information of all existing indexes was updated and it became a burden on the system. Now, to remove this burden, the statistical information of the added indexes is only created. .. 9067 Reduce time to fork new CAS processes(CUBRIDSUS-10825) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ As the number of application connections grows, it is required to fork new CAS processes upto MAX_NUM_APPL_SERVER broker parameter. 2008 R4.4 or 9.1 version reduces time to fork new CAS processes. For example, when MIN_NUM_APPL_SERVER is 100 and MAX_NUM_APPL_SERVER is 400, it took over 30 seconds to fork 300 new CAS processes. 9.1 takes 3 seconds. Resource -------- Fix to clearly remove temporary temp volumes while recovering from abnormal termination(CUBRIDSUS-10195) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix memory leak of 'cubrid shard status' command(CUBRIDSUS-10393) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix memory leak of "cubrid shard status -c -s 1" command which periodically prints the shard status information. .. 4.4new Disk write operation still continued even when the SQL_LOG mode of the broker had been dynamically changed to OFF(CUBRIDSUS-10765) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Disk Write (IO write) continued because of SQL log even when the SQL_LOG mode of the broker was changed from ON to OFF in operating the DB. This problem has been fixed. In the previous versions, when the SQL LOG mode was dynamically changed to OFF, the SQL log seemed to not be written because the log was written on the disk and then the file pointer was turned back. This problem has been fixed to no log actually being written on the disk. .. 4.4new Too much memory was used while restoring backup volume of large DB(CUBRIDSUS-11843) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Problem of too much memory being used when restoring backup volume of large DB has been fixed. For example, in the previous versions, when the DB page size was 16 KB and the DB size was 2.2 TB, if the level 0 backup file was restored, at least 8 GB memory was required. Now, the memory is not required. However, in the updated version, a lot of memory may be required for restoring the level 1 or 2 backup files. Stability --------- .. 4.4new Query scanning index was not stopped(CUBRIDSUS-11945) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The issue of query that scans index not closing and temporary temp volume being infinitely increased has been fixed. .. 4.4new Server process was abnormally terminated while restoring database volume after the server process had been terminated due to an error in deleting the index node during rollback(CUBRIDSUS-10695) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. 4.4new DB volume became abnormal at a specific time after a table was re-created after creating a table, massively repeating INSERT and DELETE, and executing ROLLBACK with auto commit OFF(CUBRIDSUS-11479) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. 4.4new First query execution failed when DB restarted after the driver had been connected(CUBRIDSUS-10773) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The issue of the first query execution failing with the error message below when DB restarted after the driver was connected has been fixed. :: Server no longer responding.... Invalid argument Your transaction has been aborted by the system due to server failure or mode change. A database has not been restarted. .. 4.4new New access request took more than 30 seconds while the CAS was frequently started or terminated(CUBRIDSUS-10891) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When MIN_NUM_APPL_SERVER in cubrid_broker.conf is smaller than MAX_NUM_APPL_SERVER, the CAS may be started or terminated according to the number of requests from the driver. It sometimes took more than 30 seconds to request for a new access when the CAS was frequently started or terminated. This problem has been fixed. .. 10009 in aprium DB server process hang due to internal issues of lock manager(CUBRIDSUS-10329)(CUBRIDSUS-11983) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix an issue that lock manager might cause server process hang while acquiring a lock. Fix another internal issue due to an incorrect lock timeout. Memory leak and abnormal termination of server that might occur while detecting a deadlock(CUBRIDSUS-10378) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix the problem that memory is leaked in a special status and the server can be abnormally terminated while detecting a deadlock. Error that might occur when a checkpoint occurs while allocating a new page in standalone mode(CUBRIDSUS-10444) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix the error "Skip invalid page in checkpoint" might occur when a checkpoint operation occurred while allocating a new page in the standalone mode. CAS hang in CLIENT WAIT state(CUBRIDSUS-10238) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix an issue can be happened when a CAS was terminated by a signal or abnormally terminated at a particular timepoint, the CAS or broker process would wait indefinitely. Abnormal CAS termination when network socket error occurred in CAS while receiving DB server error(CUBRIDSUS-10401) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix abnormal termination of CAS process when a network socket error happens while it is receiving a DB server error. In previous versions, SHARD CAS was abnormally terminated when "cubrid shard start" was executed while the MAX_NUM_APPL_SERVER value of cubrid_shard.conf (which set the number of shard CAS processes) was larger than the max_clients value of cubrid.conf (which set the maximum number of connections for the server) in the SHARD environment. .. 9848 Purge unneeded archive logs(CUBRIDSUS-10757) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix to clearly purge the unneeded archive logs. This issue can happen when a checkpoint operation is executed when there are many data flush operations. .. 4.4new In Windows, DB server process is hung when it is restarted(CUBRIDSUS-12028) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix the problem that DB server process is hung when it is restarted in Windows. This problem occurs only in Windows XP or before and Windows 2003 or before, and it does not occur in Windows 7 or Windows 2008. SQL --- .. 4.4new Failure to repeat INSERT in the array/batch executive function after executing PREPARE without committing a newly-created table(CUBRIDSUS-10723) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Incorrect query result when the left outer join query included the WHERE clause condition(CUBRIDSUS-8867) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix the problem that would cause an incorrect query result to be output when the WHERE clause was included in the query in which the left outer join was nested three times or more, as shown in the following example: .. code-block:: sql SELECT * FROM tblA LEFT OUTER JOIN tblB ON tblA.pkey = tblB.pkey LEFT OUTER JOIN tblC ON tblB.p2key = tblC.p2key LEFT OUTER JOIN tblD ON tblC.p3key = tblD.p3key WHERE tblD.p3key = 1; Failure to RENAME the table that included the AUTO_INCREMENT column(CUBRIDSUS-9691) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix an error that occurred when changing the name of a table that included the AUTO_INCREMENT attribute. -96 Error when an INSERT statement was re-executed after a table was created under Auto Commit OFF and then a unique key violation occurs(CUBRIDSUS-10239) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The -96 error would occur when the INSERT statement was re-executed after a table had been created under Auto Commit OFF, and then a unique key violation would occur while executing the INSERT statement. This error has been fixed. :: % csql testdb --no-auto-commit .. code-block:: sql CREATE TABLE tbl(col1 INTEGER UNIQUE); INSERT INTO tbl SELECT 500 + ROWNUM FROM db_class a, db_class b; INSERT INTO tbl SELECT ROWNUM FROM db_class a, db_class b; :: ERROR: Operation would have caused one or more unique constraint violations. INDEX u_t_i(B+tree: 0|139|540) ON CLASS t(CLASS_OID: 0|486|2). key: 501(OID: 0|551|358). .. code-block:: sql INSERT INTO tbl SELECT 500 + ROWNUM FROM db_class a, db_class b; :: ERROR: Media recovery may be needed on volume "/home1/cubrid1/CUBRID/databases/testdb/testdb". Failure to execute the INSERT statement due to the error of splitting the index node, as a result of many duplicate keys(CUBRIDSUS-9829) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ As the list of duplicate record addresses was large due to many duplicate keys, the INSERT statement failed to execute by selecting an incorrect node to split the index leaf node. This problem has been fixed. Problem that would cause an incorrect query result to be returned when false conditions have been given as an operand of the OR operator(CUBRIDSUS-10475) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: sql CREATE TABLE tab0 (col1 INTEGER); INSERT INTO tab0 VALUES (514); INSERT INTO tab0 VALUES (698); -- The following query should output 0 case; however, two cases have been output in the previous versions: SELECT * FROM tab0 WHERE (col1 BETWEEN 9 AND 2) OR (col1 BETWEEN 5 AND 4); Error occurring when lob type data was read in the 32-bit version(CUBRIDSUS-10437) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: sql UPDATE tbl SET b = CHAR_TO_CLOB ('2test') WHERE a = 1; Problem that an application is abnormally terminated when otehr query statements than the SELECT statement are executed even when only the query plan would be shown by setting an optimization level(CUBRIDSUS-9771) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ An application was abnormally terminated when some other SQL statements than a SELECT statement, such as INSERT, UPDATE, DELETE, REPLACE, TRIGGER, and SERIAL, were executed even when only the query plan would be shown by setting the query optimization level. This problem has been fixed that some other SQL statements than a SELECT satatement did not show the query plan. .. code-block:: sql SET OPTIMIZATION LEVEL 514; REPLACE INTO tbl (col1, col2, col3) VALUES (1, 2, 3); Accumulated query plan as executing Java Stored Procedure in Windows version(CUBRIDSUS-10489) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. 6382 Query plan was not outputted when an IN clause had a host variable (CUBRIDSUS-9705) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix an error in which the query plan would not be outputted when an IN clause contains a host variable in the form of (?, ?, ...). .. code-block:: sql csql> ;plan detail csql> SELECT * FROM tbl WHERE id IN (?, ?, ?); .. 6518 Incorrect results when WITH ROLLUP corrector of a GROUP BY clause was specified (CUBRIDSUS-9926) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix a problem in which incorrect results would be produced when the WITH ROLLUP corrector of the GROUP BY clause was specified. .. code-block:: sql // The results was not outputted with ROLLUP. SELECT a FROM t1 GROUP BY A WITH ROLLUP; // The results was outputted with ROLLUP even though it should not be outputted since the column value was NULL and a>1. SELECT a, COUNT(*) FROM t1 GROUP BY a WITH ROLLUP HAVING a>1; Error when a subquery has been specified as an input argument of the SQL function in the query statement without the FROM clause(CUBRIDSUS-9949) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When a subquery was specified as the input argument of the SQL function for the query statement without the FROM clause, the error "ERROR: syntax is ambiguous" would occur. This error has been fixed. .. code-block:: sql SELECT INET_NTOA ((SELECT 3232235530)); .. 8865 Server process would be abnormally terminated when updating statistical information for an index that used an overflow key as a separator (CUBRIDSUS-10027) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. 9500 Failure to execute INSERT by using the Host variable for the NUMERIC type column(CUBRIDSUS-11366) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When executing INSERT by using the host variable for the NUMERIC type column, the type of input value was changed into the default precision(15), scale(0) of the NUMERIC. This problem has been fixed. .. code-block:: sql CREATE TABLE tb2 (a NUMERIC (4,4)); PREPARE STMT FROM 'INSERT INTO tb2 VALUES (?)'; EXECUTE STMT USING 0.1; SELECT a FROM tb2; :: a ========== 0.0 .. code-block:: sql EXECUTE STMT USING 0.5; :: ERROR: A domain conflict exists on attribute "a". .. 6847 Error when executing CASE or DECODE statements with a PREPARE statement (CUBRIDSUS-11060) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix a problem in which query execution failed with the message "ERROR: Semantic: System error (generate var) in ../../src/parser/xasl_generation.c" when a type was not able to be determined, for example, because all the arguments were given as a host variable, in the execution of the CASE or DECODE statements with a PREPARE statement. .. code-block:: sql PREPARE ST FROM 'SELECT CASE WHEN col=? THEN ? ELSE ? END FROM tbl;' .. 6563 Error when an INSERT INTO ... SELECT ? ... query was executed while binding INT type in a CHAR type column (CUBRIDSUS-9293) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fixed a problem in which query execution failed with the message "ERROR: A domain conflict exists on attribute noname" when binding INT type in a CHAR type column when the INSERT INTO ... SELECT ? FROM db_root query was executed. .. code-block:: sql CREATE TABLE t ( a CHAR(1)); PREPARE s FROM 'INSERT INTO t SELECT ? FROM db_root'; EXECUTE s USING 1; .. 8536 Problem using the unchanged table to execute a query for a view after changing the name of the table used for creating the view(CUBRIDSUS-8536) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The unchanged table was used to execute a query for the view after changing the name of the table used for creating the view. This problem has been fixed. .. code-block:: sql CREATE TABLE foo (a INTEGER PRIMARY KEY, b VARCHAR (20)); INSERT INTO foo VALUES (1, 'foo'); CREATE TABLE bar (a INTEGER PRIMARY KEY, b VARCHAR (20)); INSERT INTO bar VALUES (1, 'bar'); CREATE VIEW v1 (a INTEGER, b VARCHAR (20)) AS SELECT * FROM foo; -- Change the name from foo to foo_old and from bar to foo. RENAME foo AS foo_old; RENAME bar AS foo; -- In the previous versions, 'bar' was output as a result of Q1 and 'foo' as a result of Q2. In version 9.1, 'bar' is output for both. SELECT b FROM foo; -- Q1 SELECT b FROM v1; -- Q2 .. 9148 in apricot An error occurred when the size of the front VARCHAR type column was smaller than the size of the rear in the UNION query(CUBRIDSUS-9292) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In the UNION query, when the size of the front VARCHAR type column is smaller than the size of the rear, "ERROR: Execute: Query execution failure #1336." error message was displayed and the query execution failed. This problem has been fixed. .. code-block:: sql CREATE TABLE u1 (a VARCHAR (1)); CREATE TABLE u2 (a VARCHAR (2)); INSERT INTO u1 VALUES ('1'); INSERT INTO u2 VALUES ('22'); SELECT a FROM (SELECT a FROM u1 UNION ALL SELECT a FROM u2) t(a); .. 4.4new An error occurred when the last argument of the CASE .. WHEN clause without the ELSE clause in the PREPARE statement or the last argument of the DECODE function without the DEFAULT argument was the host variable(CUBRIDSUS-10405) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In the previous versions, when the ELSE clause was not specified in the CASE .. WHEN clause and the argument of the last THEN clause was the host variable, an error occurred. This problem has been fixed. .. code-block:: sql PREPARE st FROM 'select CASE ? WHEN 1 THEN 1 WHEN -1 THEN ? END'; EXECUTE st USING -1, 3; ERROR: Cannot coerce value of domain "integer" to domain "*NULL*". In the previous versions, when the DEFAULT argument was not included in the DECODE function and the result argument was the host variable, an error occurred. This problem has been fixed. .. code-block:: sql PREPARE st FROM 'select DECODE (?, 1, 10,-1,?)'; EXECUTE st USING -1,-10; ERROR: Cannot coerce value of domain "integer" to domain "*NULL*". .. 4.4new, 4.4 & 9.2's each symptom is different An application was abnormally terminated in the SELECT statement that output the LOB file path when the LOB file name including the absolute path was larger than 128(CUBRIDSUS-10856) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ An application was abnormally terminated in the SELECT statement that output the LOB file (the file that saved the actual LOB type data) path when the LOB file name including the absolute path was larger than 128. This problem has been fixed. .. code-block:: sql CREATE TABLE clob_tbl(c1 clob); SELECT * FROM clob_tbl; .. 4.4new An application was abnormally terminated when the table set was SELECTed, including view(CUBRIDSUS-11016) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: sql CREATE TABLE t (a int, b int); CREATE TABLE u (a int, b int); CREATE VIEW vt AS SELECT * FROM t; SELECT * FROM (vt, u); .. 4.4new An error recurred to the query of the corresponding same prepare statement when the value of the system parameter max_plan_cache_entries was -1 and an error occurred in executing the INSERT query(CUBRIDSUS-11038) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Issue existed where, while the system parameter max_plan_cache_entries is -1 (plan cache OFF) and an error occurred in the first INSERT query execution, the query that corresponded to the same prepare statement caused continuous errors even if the host variable to bind was changed. This problem has been fixed. .. 4.4new An error occurred when RENAME the table name and DROP the existing table in the query statement that did not use the query plan cache(CUBRIDSUS-11039) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When the system parameter max_plan_cache_entries was configured to -1 and no query plan cache was used or when a host variable was used in the IN clause, the table name was RENAME and then the existing table was DROP in the query statement that did not use the query plan cache. When the query was executed, "INTERNAL ERROR: Assertion 'false' failed" error occurred. This problem has been fixed. +----------------------------------------+-------------------------------------------+ | T1 | T2 | +========================================+===========================================+ | SELECT * FROM foo WHERE id IN (?, ?); | | +----------------------------------------+-------------------------------------------+ | | CREATE TABLE foo_n AS SELECT * FROM foo; | | +-------------------------------------------+ | | RENAME foo AS foo_drop; | | +-------------------------------------------+ | | RENAME foo_n AS foo; | | +-------------------------------------------+ | | DROP TABLE foo_drop; | +----------------------------------------+-------------------------------------------+ | SELECT * FROM foo WHERE id IN (?, ?); | | +----------------------------------------+-------------------------------------------+ .. 4.4new An application was abnormally terminated when the plan cache was OFF and a specific multiple query statement was executed(CUBRIDSUS-11055) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When the max_plan_cache_entries in cubrid.conf was configured to -1 to make the plan cache OFF and then the multiple query statement was executed, the application was abnormally terminated. This problem has been fixed. .. 4.4new An application was abnormally terminated when a query including the comparison statement requiring type conversion attempted to execute(CUBRIDSUS-11064) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When a query including the comparison statement requiring type conversion attempted to execute, the application was abnormally terminated. This problem has been fixed. In the previous versions, it occurred when a function used in the SELECT LIST and the LIMIT clause was used. When either of the two was omitted, the error message was normally output. .. code-block:: sql SELECT MIN(col_int) FROM cc WHERE cc. col_int_key >= 'vf' LIMIT 1; .. 4.4new Wrong result was output when the SELECT statement that had scanned the index was executed while DESC had been included in a certain column of the multi-column index and the next column value had been NULL(CUBRIDSUS-11354) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: sql CREATE TABLE foo ( a integer primary key, b integer, c integer, d datetime ); CREATE INDEX foo_a_b_d_c on foo ( a , b desc , c ); INSERT INTO foo VALUES ( 1, 3, NULL, SYSDATETIME ); INSERT INTO foo VALUES ( 2, 3, NULL, SYSDATETIME ); INSERT INTO foo VALUES ( 3, 3, 1, SYSDATETIME ); SELECT * FROM foo WHERE a = 1 AND b > 3 ; :: -- In the previous version, above query shows a wrong result. a b c d ====================================================================== 1 3 NULL 12:23:56.832 PM 05/30/2013 .. 8931 in 9.1 Wrong result was output when column of ORDER BY clause did not exist in the SELECT list of subquery(CUBRIDSUS-11814) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Wrong result was output when column of ORDER BY clause did not exist in the SELECT list of subquery. This problem has been fixed. .. code-block:: sql SELECT a FROM foo WHERE a IN (SELECT a FROM foo WHERE b = 'AAA' ORDER BY b, c); .. 4.4new A hierarchical query on joined tables, that also contains some correlated subqueries in SELECT list, may lead to wrong result(CUBRIDSUS-11658) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: sql CREATE TABLE t1(i INT); CREATE TABLE t2(i INT); INSERT t1 VALUES (1); INSERT t2 VALUES (1),(2); SELECT (SELECT COUNT(*) FROM t1 WHERE t1.i=t2.i) FROM t1,t2 START WITH t2.i=1 CONNECT BY NOCYCLE 1=1; The previous versions returns wrong result. :: 1 1 The fixed version returns the correct result. :: 1 0 .. 6365 in apricot Number of query results was incorrect for the hierarchical query that included ROWNUM condition and used index(CUBRIDSUS-9531) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The number of query results could not be limited by ROWNUM for the hierarchical query that included ROWNUM condition and used index. This problem has been fixed. .. code-block:: sql SELECT oid FROM foo WHERE ROWNUM = 1 START WITH oid = '1234567' CONNECT BY PRIOR poid = oid .. 4.4new Wrong result was returned when the first column of the table where the CHAR type columns had been sequentially defined was entered in the CONV function(CUBRIDSUS-11824) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The CONV value for the second column was returned when the first column of the table where the CHAR type columns had been sequentially defined was entered in the CONV function. This problem has been fixed. .. code-block:: sql CREATE TABLE tbl (h1 CHAR(1), p1 CHAR(4)); INSERT INTO tbl (h1, p1) VALUES ('0', '0001'); SELECT CONV (h1, 16, 10) from tbl; 1 .. 4.4new When there is an type casting because types between SELECT list and INSERT list are different in INSERT ... SELECT syntax, and ORDER BY clause exists in SELECT query, INSERTed order became different(CUBRIDSUS-12031) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fix the case that when there is an type casting because types between SELECT list and INSERT list are different in INSERT ... SELECT syntax, and ORDER BY clause exists in SELECT query, INSERTed order became different. If an AUTO_INCREMENT column exists in the INSERT list columns, INSERTed order becomes important. .. code-block:: sql CREATE TABLE t1 (id INT AUTO_INCREMENT, a CHAR(5), b CHAR(5), c INT); CREATE TABLE t2 (a CHAR(30), b CHAR(30), c INT); INSERT INTO t2 VALUES ('000000001', '5', 1),('000000002','4',2),('000000003','3',3),('000000004','2',4),('000000005','1',5); INSERT INTO t1(a,b,c) SELECT * FROM t2 ORDER BY a, b DESC; SELECT * FROM t1; Fix to use an index when a subquery is given in a START WITH clause as a condition in a hierarchical query(CUBRIDSUS-9613) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: sql SELECT /*+ RECOMPILE use_idx*/ a, b FROM foo START WITH a IN ( SELECT a FROM foo1 ) CONNECT BY PRIOR a = b; HA -- .. 6511 A schema is replicated to the slave node with the user who connected to the DB firstly from the application(CUBRIDSUS-11878) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Schema is replicated to the slave node with the user who had connected to the DB firstly from the application. For example, when user1 account had connected to and disconnected from the DB and then user2 account connected to create a table, the table owned by user1 was created in the slave node. This problem would persist until the Broker Common Application Server (CAS) was restarted. This problem has been fixed. Add log information for changing the node status(CUBRIDSUS-9748) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Add the following log information for changing the node status in HA environment. This information is written in an error log file when the error_log_level system parameter value is the error value or a lower value. * The log information of cub_master process is saved in the $CUBRID/log/_master.err file as follows: :: HA generic: Send changemode request to the server. (state:1[active], args:[cub_server demodb ], pid:25728). HA generic: Receive changemode response from the server. (state:1[active], args:[cub_server demodb ], pid:25728). * The log information of cub_server process is saved in the $CUBRID/log/server/__